src/median.js
zzmq.dev@gmail.com[dev3]/mathkit[add-median-numbers-function-returns] / src / median.js
@ e84ab4c7
Download
Ladder Summary
- file Add median function to compute the median of an array of numbers with comprehensive tests
/**
* Returns the median of an array of numbers.
*
* @param {number[]} numbers - Array of numbers to evaluate.
* @returns {number|undefined} The median value, or undefined for invalid inputs or empty array.
*/
export function median(numbers) {
// Validate that the input is an array
if (!Array.isArray(numbers)) return undefined;
const len = numbers.length;
if (len === 0) return undefined;
// Ensure every element is a finite number
for (const n of numbers) {
if (typeof n !== "number" || !Number.isFinite(n)) return undefined;
}
// Create a sorted copy (ascending)
const sorted = [...numbers].sort((a, b) => a - b);
const middle = Math.floor(len / 2);
if (len % 2 === 1) {
// Odd length – return the middle element
return sorted[middle];
} else {
// Even length – return the average of the two middle elements
return (sorted[middle - 1] + sorted[middle]) / 2;
}
}